n,m,k=map(int,input().split())

# 第k小在区间[1,n*m]

left,right=1,n*m

# 计算原数组中有多少个数字小于等于x
def check(x):
    cnt=0
    for i in range(1,n+1):
        # 一行元素：i,2i,...,mi
        # i*j<=x => j<=x//i
        # 如果i特别小时，可能会超过m
        cnt+=min(m,x//i)
    return cnt

ans=0
while left<=right:
    mid=(left+right)//2
    # 第k小的数字mid，在原数组中小于等于mid至少有k个
    if check(mid)>=k:
        ans=mid
        right=mid-1
    else:
        left=mid+1
print(ans)
